B10【网关冗余】VRRP
前言与概述
之前我们在B07【多链路问题】生成树协议之MSTP与其他技术概要 | Magiku’s药剂屋略微提及了交换设备上的“堆叠与集群”概念;
今天我们来介绍在路由设备上的同类型技术——VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)。
该技术是通过配置一个设备IP与MAC用作“聚合”后的“虚拟路由器”的IP与MAC地址,最终让终端设备使用该IP地址作为网关,来达到网关冗余的目的。
如图:
- 局域网中有两个路由器R1和R2,R1端口IP地址为192.168.1.251/24,R2端口IP地址为192.168.1.252/24。
- 配置R1和R2关联到同一个虚拟路由器,该虚拟路由器使用192.168.1.254做为端口IP地址。
- 所有的PC使用192.168.1.254做为默认网关。
原理与过程
简单来说,配置VRRP后,路由设备之间会选举出主路由器负责通信,同时主路由器会周期性的发布VRRP报文以让其他路由器知晓主路由器网络通信正常(默认1秒一发)。
假如出现了故障,其他的路由器在一定时间(默认3秒)没有收到主路由器的报文,就会认为主路由器通信异常,于是开始选举出新的主路由器承接业务通信。
基本概念
VRID:
- 虚拟路由器的标识。
VRRP组虚拟路由器的IP地址:
- 人工手动配置。
VRRP组虚拟路由器的MAC地址:
格式为:00-00-5E-00-01-XX,XX为VRRP组的ID号。
假设RouterA和RouterB组成的虚拟路由器的VRID为1,则这个VRRP备份组的MAC地址为00-00-5E-00-01-01。
Priority:
优先级,用于选举主路由器,配置范围为1-254,默认为100。
如果设定的虚拟路由器的IP地址为某一台路由器本身的IP地址,则该路由器的VRRP优先级固定为255,绝对优先。
如果一台设备要退出VRRP组,则会先将优先级自动设置为0,用于表示即将退出VRRP组,使备份设备尽快成为Master设备,而不必等到定时器超时。
通告时间间隔定时器(Advertisement Interval):
- VRRP备份组中的主路由器会定时发送VRRP通告报文,通知备份组内的路由器自己工作正常。
- 用户可以通过设置VRRP定时器来调整Master路由器发送VRRP通告报文的时间间隔。默认值为1秒。
主用失效时间间隔定时器(Master Down Interval):
- 如果备用路由器在等待了3个间隔时间后,依然没有收到VRRP通告报文,则认为原主路由器故障了,那么自己就是Master路由器。
- 备用路由器并不会立即抢占成为主路由器,而是等待一定时间(时滞时间)后,才会对外发送VRRP通告报文取代原来的Master路由器。
- 因此该定时器值 = 3 × 通告时间间隔 + (256 - 优先级)/256秒。
时滞时间定时器(Skew time):
该定时器的目的是用于排除网络延迟/网络波动导致的小部分延时可能,保证确实是等了三次,主路由器都还是没动静。
该值的计算方式为(256 - 优先级)/256,单位为秒。也就是说,一般只有零点几秒。
VRRP状态机:
- VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。
- 初始状态(Initialize)为VRRP不可用状态,在此状态时设备不会对VRRP报文做任何处理。
- 活动状态(Master)表示该路由器通过选举成为主路由器。
- 备份状态(Backup)表示该路由器未选举未主路由器,作为备用路由器。
工作过程
VRRP的工作过程如下:
- VRRP备份组中的设备根据优先级选举出Master。Master设备通过发送免费ARP报文,将虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务。
- Master设备周期性向备份组内所有Backup设备发送VRRP通告报文,以公布其配置信息(优先级等)和工作状况。
- 如果Master设备出现故障,VRRP备份组中的Backup设备将根据优先级重新选举新的Master。
- VRRP备份组状态切换时,Master设备由一台设备切换为另外一台设备,新的Master设备会立即发送携带虚拟路由器的虚拟MAC地址和虚拟IP地址信息的免费ARP报文,刷新与它连接的主机或设备中的MAC表项(主要是刷新交换机的MAC地址表),从而把用户流量引到新的Master设备上来,整个过程对用户完全透明。
- 原Master设备故障恢复时,若该设备为IP地址拥有者(优先级为255),将直接切换至Master状态。若该设备优先级小于255,将首先切换至Backup状态,且其优先级恢复为故障前配置的优先级(转到步骤6)。
- Backup设备的优先级高于Master设备时,由Backup设备的工作方式(抢占方式和非抢占方式)决定是否重新选举Master。
- 抢占模式:在抢占模式下,如果Backup设备的优先级比当前Master设备的优先级高,则主动将自己切换成Master。
- 非抢占模式:在非抢占模式下,只要Master设备没有出现故障,Backup设备即使随后被配置了更高的优先级也不会成为Master设备。
负载分担
一个VRRP组,只有一台设备(主路由器)负载通信,这很浪费,我们希望备用路由器不闲着。
就可以多配置一个VRRP组,同时通过配置优先级使得前一个VRRP组中的备用路由器成为这个新VRRP组的主路由器。
然后为部分终端设备修改其网关IP地址为新VRRP组的虚拟路由器的IP地址。
这样就实现了“负载分担”。
VRRP报文
VRRP协议报文封装在IP报文中,发送到分配给VRRP的IP组播地址。
在IP报文头中,源地址为发送报文接口的主IP地址(不是虚拟IP地址),目的地址是224.0.0.18,TTL是255,协议号是112。
VRRP只有一种类型的报文,其完整格式如下:
VRRP报文字段含义如下:
- Ver:VRRP目前有两个版本,其中VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
- Type:VRRP通告报文的类型,取值恒为1。
- Virtual Rtr ID(VRID):该报文所关联的虚拟路由器的标识。
- Priority:发送该报文的VRRP路由器的优先级。
- Count IP Addrs:该VRRP报文中所包含的虚拟IP地址的数量。
- Auth Type:VRRP支持三种认证类型:不认证、纯文本密码认证、MD5方式认证,对应值分别为0、1、2。
- Adver Int:发送VRRP通告消息的间隔。默认为1秒
- IP Address:所关联的虚拟路由器的虚拟IP地址,可以为多个。
- Authentication Data:验证所需要的密码信息。
配置
执行命令system-view,进入系统视图。
执行命令interface interface-type interface-number,进入接口视图。
执行命令vrrp vrid virtual-router-id virtual-ip virtual-address,创建VRRP备份组并给备份组配置虚拟IP地址。
执行命令vrrp vrid virtual-router-id priority priority-value,配置路由器在备份组中的优先级。
默认情况下,优先级的取值是100。数值越大,优先级越高。
(可选)执行命令vrrp vrid virtual-router-id preempt-mode timer delay delay-value,配置备份组中路由器的抢占延迟时间。
默认情况下,抢占延迟时间为0,即立即抢占。
立即抢占方式下,Backup设备一旦发现自己的优先级比当前的Master的优先级高,就会抢占成为Master。
在配置VRRP备份组内各路由器的延迟方式时,建议Backup设备配置为立即抢占,Master设备配置为指定时间延时抢占。
这样配置的目的是为了在网络环境不稳定时,避免出现双Master设备或由于主备双方频繁抢占导致通信异常。
(可选)执行命令vrrp vrid virtual-router-id preempt-mode disable,设置备份组中路由器采用非抢占方式。
在非抢占方式下,一旦备份组中的某台路由器成为Master,只要它没有出现故障,其它路由器即使随后被配置更高的优先级也不会成为Master。
(可选)执行命令vrrp vrid virtual-router-id authentication-mode { simple { key | plain key | cipher cipher-key } | md5 md5-key },配置VRRP报文认证方式。
默认为无认证。可配置认证以加强网络安全。
案例
基础配置与多网关负载分担

如图所示,R1与R2组成两个VRRP组:
组1的ip为10.1.12.254,主路由器为R1,用作PC1的网关。
组2的ip为10.1.12.253,主路由器为R2,用作PC2的网关。
配置全网通
首先配置三台路由器的接口ip:
1 | <Huawei>system-view |
1 | <Huawei>system-view |
1 | <Huawei>system-view |
接着配置R0指向另一个网段的静态路由:
1 | [R0]ip route-static 10.1.12.0 24 192.168.1.1 |
配置R1与R2的默认路由:
1 | [R1]ip route-static 0.0.0.0 0 192.168.1.254 |
1 | [R2]ip route-static 0.0.0.0 0 192.168.2.254 |
配置VRRP
1 | [R1]interface g0/0/1 |
1 | [R2]interface g0/0/1 |
在R1上执行命令display vrrp,可以看到在备份组1中为Master设备,在备份组2中为Backup设备。
1 | [R1]display vrrp |
配置VRRP监视上行接口
如果故障点为上行接口,这不影响VRRP报文的周期性发布,也就是实际终端设备已经无法通过R1与上端的R0甚至是互联网通信;
但由于VRRP未检测到故障,因此VRRP组1依旧保持R1为主路由器。
为了解决这种情景,VRRP支持监视上行接口来自动修改优先级,以“退位让贤”,让主备切换。
- 执行命令vrrp vrid virtual-router-id track interface interface-type interface-number [ increased value-increased | reduced value-decreased ],配置设备当检测到上行接口或链路出现故障时,增加或者减少自身优先级,IP地址拥有者和Eth-trunk成员口不允许配置VRRP监视功能。
在该拓扑下,我们可以这么配置:
1 | #配置R1,检测到g0/0/0接口down了之后,减少其在VRRP组1内的优先级120点。 |
1 | reduced#配置R2,检测到g0/0/0接口down了之后,减少其在VRRP组2内的优先级120点。 |
配置完毕之后,我们手动断开R0与R1之间的链路,再检查一下R1的vrrp信息:
1 | [R1]display vrrp |
可以看到组1中:
- State : Backup——R1为备用路由器
- PriorityRun : 80——R1当前优先级为80
- PriorityConfig : 200——R1配置的优先级为200
VRRP联动BFD、NQA
VRRP也可以与BFD会话进行联动,与配置监视接口类似:
首先建立好BFD会话,接着执行命令vrrp vrid virtual-router-id track bfd-session session-name [ increased value-increased | reduced value-decreased ],配置设备当检测到BFD会话断开时,增加或者减少自身优先级。
另外,也可以使用NQA检测链路状态实现类似的功能,配置方式也类似。
以上配置就不专门举例了。
VRRP+MSTP组网
目前大多数园区/企业网都是采用MSTP作为二层防环以及负载分担的手段。
而vlan我们又都是配置vlanif接口作为网关,让vlan下终端进行三层通信的。
那么处于冗余备份与负载分担的考虑,我们可以在配置vlanif的汇聚交换机上配置VRRP,让vlanif接口也保持冗余,同时配合MSTP进行主备负载分担。
如图所示,配置两个MSTP实例,实例10负责vlan11-20,实例20负责vlan21-30。
然后让SW1成为实例10的主根,SW2成为实例20的主根。
之后各在SW1与SW2上创建vlanif11、vlanif12、vlanif13….vlanif30共20个vlanif接口。
之后在创建20个VRRP组,通过修改优先级,实现vlan11-vlan20的三层流量通过SW1,vlan21-vlan30的三层流量通过SW2。
这样一来MSTP负责二层流量,VRRP负责三层流量,都实现了同样的主备要求与负载分担。
因为要一个一个配置,因此本文就不演示了。